环境
https://github.com/fanygit/SpringbootShiroDemo
CVE-2016-6802
影响版本 <= 1.3.1
漏洞利用的前提是需要配置server.servlet.context-path
ShiroConfig配置
application.properties
1 | server.servlet.context-path=/fany |
漏洞复现
正常访问,会重定向到登录页面
可使用/a/../fany/admin/info
、/./fany/admin/info
、/;/fany/admin/info
绕过
漏洞分析
断点打在org.apache.shiro.web.filter.mgt.PathMatchingFilterChainResolver#getChain
方法中,首先是获取过滤器链管理对象FilterChainManager
,然后调用this.getPathWithinApplication(request)
获取请求的URI
跟入后,在org.apache.shiro.web.util.WebUtils#getPathWithinApplication
方法中,首先会调用getContextPath
方法拿到contextPath